第30天了,來聊聊 vm/虛擬機 ...
如果只是想練習Linux的CLI,一定要在GCP上開instance嗎?
其實有很多工具可以先讓開發者在本地開發環境進行作業,例如Vagrant。甚至是容器化開發環境的 Laradock。
因為前面都在使用GCE,基本上都是純命令列介面(Command-Line Interface,CLI),像這樣
從 masOS介面移轉過來時難免會有些不習慣,畢竟Google Cloud Platform 免費額度有限,雖然有都市傳說開一台instanece幾分鐘內刪掉就不用錢的都市傳說。但還是建議有些 Linux指令練習可以先透過一台vm去在本地開發時做練習。
友人推薦使用 Vagrant,用起來確實蠻順手的,建議可以玩玩看。熟練後在 GCE就可以開小一點規格的instance,加大虛擬記憶體,就可以順暢地部署 side project,本篇也會介紹Linux如何執行swap的部分。
Vagrant 底層還是透過 virtual box 這套虛擬機管理工具建構。
因此可先至 virtualbox官網 下載開發環境。
https://www.vagrantup.com/downloads
vagrant -v
Vagrant 2.2.9
vagrant 提供許多客制化的開發環境,例如ubuntu、centOS等。
官網提供許多參考,https://app.vagrantup.com/boxes/search
vagrant box list
==> vagrant: A new version of Vagrant is available: 2.2.10 (installed version: 2.2.9)!
==> vagrant: To upgrade visit: https://www.vagrantup.com/downloads.html
ubuntu/trusty64 (virtualbox, 20190514.0.0)
選擇啟動哪一個box vagrant init ubuntu/trusty64
開始啟動 vagrant up
進入vm vagrant ssh
關閉vm vagrant halt
重啟vm vagrant reload
刪除vm vagrant destroy
在某些side project可能儲存空間需求不大,但vm記憶體太少時可能會有安裝環境上的問題,e.g. MySQL基本安裝需要一定的RAM,
以下是透過vm練習切割虛擬記憶體的步驟與說明。
先檢查記憶體配置狀態 free -m
建立並前往 swap資料夾
mkdir -p /var/swap
cd /var/swap
** Generate swap file 設定虛擬記憶體大小**
//1M * 2000 ~= 2GB of swap memory
dd if=/dev/zero of=swapfile bs=1M count=2000
swap相關指令
建立 Linux swap area
mkswap /home/vagrant/swapfile
調整系統設定
``sudo vi /etc/fstab``
```
/home/vagrant/swapfile swap swap defaults 0 0
```
允許裝置與檔案 paging 與 swapping
``sudo swapon -a``
重開vm後再檢查記憶體狀態
透過 30天的文章,分享我在使用Laravel開發與部署GCE的經驗。
還有一些東西沒分享到, 例如可以第三種登錄時建立token的方式JWT、第三方登入分別使用內建的 Socialite或原生服務的Oauth機制、寄信驗證機制的 Mail trap、如果想自己刻畫面用blade.php、怎麼在同一份專案前後端分離時call 自己的API...等等。
重新寫成鐵人賽的過程中,也是重新檢視自己學習狀況。希望來年還有機會再參加鐵人賽。
參考資料
https://www.vagrantup.com/docs/cli/destroy
https://blog.csdn.net/boling_cavalry/article/details/99702719
https://yuanchieh.page/posts/2020-04-12_vagrant-教學-一鍵啟動配置開發環境
https://ithelp.ithome.com.tw/articles/10202559
https://stackoverflow.com/questions/20667761/composer-killed-while-updating
http://leadtosilverlining.blogspot.com/2019/04/add-swap-to-vm-instance-of-gcp.html
https://exfast.me/2018/11/linux-added-virtual-memory-swap/
https://askubuntu.com/questions/898941/how-to-check-ram-size
https://www.itread01.com/p/148373.html